An API for Runtime Code Patching
نویسندگان
چکیده
We present a post-compiler program manipulation tool called Dyninst which provides a C++ class library for program instrumentation. Using this library, it is possible to instrument and modify application programs during execution. A unique feature of this library is that it permits machine-independent binary instrumentation programs to be written. We describe the interface that a tool sees when using this library. We also discuss three simple tools built using this interface: a utility to count the number of times a function is called, a program to capture the output of an already running program to a file, and an implementation of conditional break points. For the conditional breakpoint example, we show that by using our interface compared with gdb we are able to execute a program with conditional breakpoints up to 900 times faster.
منابع مشابه
Specification and Runtime Verification of API Constraints on Interacting Objects
Most applications need to invoke some Application Programming Interfaces (APIs), e.g. JDK (Java Development Kit) API. When invoking those APIs, applications must follow some API constraints. Violation of these constraints will lead to some severe program defects. To detect this kind of defects, lots of static and dynamic approaches are explored, using formally described API constraints. While m...
متن کاملKatana: Towards Patching as a Runtime Part of the Compiler-Linker-Loader Toolchain
Despite advances in modularity, security, and reliability of software, offline patching remains the predominant form of updating or protecting commodity software. Unfortunately, the mechanics of hot patching (the process of upgrading a program while it executes) remain understudied, even though such a capability offers practical benefits for both consumer and mission-critical systems. A reliabl...
متن کاملAutopilot: Adaptive Control of Distributed Applications
• Traditional a posteriori approach 1. Application instrumentation – Instrumented automatically by object code patching or compiler. – Manually insert instrumentation library calls. 2. Execute, measure, and extract performance data 3. Analysis and visualization – Identify performance bottlenecks 4. Application optimization – Modify program, adjust runtime policies • This tuning model presumes r...
متن کاملDesign and Implementation of a high-level multi- language .NET Debugger
The Microsoft .NET Common Language Runtime (CLR) provides a low-level debugging application programmers interface (API), which can be used to implement traditional source code debuggers but can also be useful to implement other dynamic program introspection tools. This paper describes our experience in using this API for the implementation of a high-level debugger. The API is difficult to use f...
متن کاملComputer Science Technical Report The Stencil Processing Unit: GPGPU Done Right
As computing moves to exascale, it will be dominated by energy-efficiency. We propose a new GPU-like accelerator called the Stencil Processing Unit (SPU), for implementing dense stencil computations in an energy-efficient manner. We address all the levels of the programming stack, from architecture, programming API, runtime system and compilation. First, a simple architectural innovation to cur...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- IJHPCA
دوره 14 شماره
صفحات -
تاریخ انتشار 2000